home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 223_01 / time.c < prev    next >
Text File  |  1980-01-01  |  4KB  |  183 lines

  1. /*    
  2. ** time.c    Time set/display Program    by F.A.Scacchitti  9/23/84
  3. **            Copyright 1984            25 Glenview Lane
  4. **          All rights reserved           Roch, NY  14609
  5. **
  6. **        Written in Small-C  (Version 2.09)
  7. **
  8. **        Time Utility for the Xerox 820
  9. **
  10. **        time p   --->  prints current time and date
  11. **        time s     --->  enter time set routine
  12. **
  13. ** This program is designed to be used with an auxiliary printf routine
  14. ** (prntf) to minimize program size. (printf may be substituted for prntf) 
  15. **                                 (fas)
  16. **
  17. */
  18.  
  19. #include <stdio.h>
  20.  
  21. #define CLEAR 26
  22. #define BACKSP 8
  23. #define SPACE 32
  24. #define VERTAB 11
  25. #define LINSIZ 18
  26. /*#define MEM 65369             pointer to first time byte for the 820-I   */
  27. #define MEM 65366           /*  pointer to first time byte for the 820-II  */
  28.  
  29.  
  30. char array[LINSIZ];
  31. int num[6];
  32. int lolim[] = { 1, 1, 84, 0, 0, 0};
  33. int hilim[] = {31, 12, 99, 23, 59, 59};
  34.  
  35.  
  36. main(argc,argv) int argc, *argv; {
  37.  
  38. char *entry;
  39.  
  40. argv++;        /* point to option */
  41. entry = *argv;    /* set up 2nd indirect pointer   *entry = **argv */
  42.  
  43.    switch (*entry) {
  44.       case 'P':
  45.         if(!gudtim(gettim())) settim();
  46.         if(gudtim()) prntim();
  47.         break;
  48.       case 'S':
  49.         if(settim()) prntim();
  50.         break;
  51.       default:
  52.         argc = 0;
  53.         break;
  54.    }
  55.    if (argc != 2){
  56.     prntf(" usage: time p <CR> prints time and date\n");
  57.     prntf("        time s <CR> to set time and date\n");
  58.    }
  59. }
  60.  
  61. prntim(){    /* Routine to print time and date */
  62.  
  63. char *clkmem;
  64.  
  65.    putchar(VERTAB);
  66.  
  67.    clkmem = MEM;
  68.    clkmem++;
  69.     switch (*clkmem){
  70.     case 1:
  71.         prntf("January");
  72.         break;
  73.     case 2:
  74.         prntf("February");
  75.         break;
  76.     case 3:
  77.         prntf("March");
  78.         break;
  79.     case 4:
  80.         prntf("April");
  81.         break;
  82.     case 5:
  83.         prntf("May");
  84.         break;
  85.     case 6:
  86.         prntf("June");
  87.         break;
  88.     case 7:
  89.         prntf("July");
  90.         break;
  91.     case 8:
  92.         prntf("August");
  93.         break;
  94.     case 9:
  95.         prntf("September");
  96.         break;
  97.     case 10:
  98.         prntf("October");
  99.         break;
  100.     case 11:
  101.         prntf("November");
  102.         break;
  103.     case 12:
  104.         prntf("December");
  105.         break;
  106.     default:
  107.     abort('?');
  108.     }
  109.  
  110.     clkmem--;
  111.    prntf(" %d, 19%d  %02d:%02d:%02d",*clkmem++,*++clkmem,*++clkmem,
  112.                         *++clkmem,*++clkmem);
  113.  
  114. }
  115.  
  116. settim(){    /* Routine to set time and date */
  117.  
  118. int i;
  119. char c, *clkmem;
  120.  
  121.     clkmem = MEM;
  122.  
  123. /* Display the time set header */
  124.  
  125.     putchar(CLEAR);
  126.     prntf("Enter the time and date as dd/mm/yy hh:mm:ss\n");
  127.     prntf("\n eg. for 1:45 P.M. on August 12, 1984\n");
  128.     prntf("     Enter ---> 12/08/84 13:45:00\n");
  129.     prntf("                dd/mm/yy hh:mm:ss");
  130.     prntf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
  131.  
  132. /* Get the input string */
  133.     i = -1;
  134.     while (((c = getchar()) != CR) && i++ < 17)
  135.         if (c == BACKSP)
  136.             if (i == 0){
  137.                 i = -1;
  138.                 putchar(SPACE);}
  139.             else
  140.                 i = i - 2;
  141.         else
  142.             array[i] = c;
  143.  
  144. /* Convert the characters to integer values */
  145.  
  146.     for (i = 0; i <= 18; i = i + 3)
  147.         num[i/3] = ((array[i] - '0') * 10) + (array[i+1] - '0');
  148.  
  149.     prntf("\n\n");
  150.  
  151. /* Store the values to memory if they're valid */
  152.  
  153.     if (gudtim()) {
  154.         for (i = 0; i <=5; i++)
  155.             *clkmem++ = num[i];
  156.         return(TRUE);
  157.     }else{ 
  158.         prntf(" Incorrect data entered - time not updated");
  159.         return(FALSE);
  160.     }
  161. }
  162.  
  163. gudtim(){
  164.  
  165. int i;
  166.  
  167.    for(i = 0; i <= 5;i++)
  168.     if (num[i] < lolim[i] || num[i] > hilim[i]) return(FALSE);
  169.    return(TRUE);
  170. }
  171.  
  172. gettim(){  /* Routine to get time data from memory to an array  */
  173.  
  174. int i;
  175. char *clkmem;
  176.  
  177.     clkmem = MEM;
  178.  
  179.     for (i = 0; i <=5; i++)
  180.             num[i] = *clkmem++;
  181. }
  182.  
  183.